<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>使用Symbol定义protected属性</title>
</head>
<body>
    
</body>
<script>
    /*
        使用protected属性相当于是受到保护的属性  外部是没有办法修改的
    */
    // 我们可以使用 Symobl()来定义  因为Symbol是永远都不会重复的值
    
    let symbol = Symbol()
    class site{
        [symbol] = {}
        constructor(value){

            // this[symbol].name = value
        }
        set host(value){
            this[symbol].host = value
        }
        get host(){
            return this[symbol].host
        }
    }
    let web = new site('jimmy')
    console.log(web)  //site {name: "jimmy", Symbol(): "http://www.baidu.com"}
    console.log(web[Symbol()])  //underfined  因为 Symbol类型每次都是唯一的 所以是娶不到值的

    web.host = 'http://www.jimmy.com'
    console.log(web.host)  // 使用访问器我们就能够访问的到 但是使用直接的访问我们是访问不到的
</script>
</html>